﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0144_TitleToNumber : IAlgorithm
    {
        // Excel表列序号

        // 给你一个字符串 columnTitle ，表示 Excel 表格中的列名称。返回 该列名称对应的列序号 。

        // 提示：
        //  1 <= columnTitle.length <= 7
        //  columnTitle 仅由大写英文组成
        //  columnTitle 在范围["A", "FXSHRXW"] 内

        public void Test()
        {
            Console.WriteLine(TitleToNumber("ZY"));
        }

        // 算法
        public int TitleToNumber(string columnTitle)
        {
            var len = columnTitle.Length;
            int result = 0;
            for (int i = 0; i < len; i++)
            {
                var curChar = columnTitle[i];
                var curNum = TransNum(curChar);
                result += curNum * (int)Math.Pow(26, len - i - 1);
            }
            return result;
        }

        private int TransNum(char c)
        {
            return c - 'A' + 1;
        }
    }
}
